// ==UserScript==
// @name           Bibliomonkey
// @namespace      http://code.google.com/p/bibliomonkey/
// @description    BiblioMonkey (http://code.google.com/p/bibliomonkey/) - персонализация публичной библиотеки Aldebaran.ru. Добавление новых возможностей, скорости, удобства. Версия 1.3.7 - Эксперементальная бета-версия.
// @author         Bibliomonkey Team
// @version        1.3.7
// @include http://lib.aldebaran.ru/*
// ==/UserScript==
// Используется исходный код от "Aldebaran recense filter" (http://userscripts.org/scripts/review/17180) от sdio (http://www.linux.org.ru/whois.jsp?nick=sdio)
//

(function() {
	
	//Формирование вывода версии
	var menuAbout = $xFirst("/html/body/table[2]/tbody/tr[2]/td/small");
	menuAbout.appendChild(document.createElement("br"));
	menuAbout.appendChild(document.createTextNode("Версия Bibliomonkey: 1.3.7 SVN Beta"));

  String.prototype.trim = function(){ return this.replace(/(^\s+)|(\s+$)/g, ""); } //Объявление функции trim
//Функции по работе c Xpath от sdio
    function $(id) {return document.getElementById(id);}

    function $x(xpath, contextNode, resultType) {
		contextNode = contextNode || document.body;
		resultType = resultType || XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
	return document.evaluate(xpath, contextNode, null, resultType, null);
	}

	function $xFirst(xpath, contextNode) {
		var xpr = $x(xpath, contextNode, XPathResult.FIRST_ORDERED_NODE_TYPE);
	return xpr.singleNodeValue;
	}
	
	function $xLast(xpath, contextNode) {
		var xpr = $x(xpath, contextNode);
	return xpr.snapshotItem(xpr.snapshotLength - 1);
	}
//
//Работа с куками
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0; i<ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
//
//Функции установки\скрытии фильтра жанров
function filterHide(re, flag){
	var cmt = $xFirst("//table[@class='tab1']");
	var snap = $x(".//div[@class='BOOKDETAIL']", cmt);
	for (var i=0; i<snap.snapshotLength; i++) {
		elem = snap.snapshotItem(i);
		cont = $xFirst("./a[@class='black']", elem).textContent;
		if (flag) {
			if (! cont.match(re)){
				elem.parentNode.parentNode.style.display = "none";
				elem.parentNode.parentNode.className = "_hide_";
			}
		} else {
			if (cont.match(re))  {
				elem.parentNode.parentNode.style.display = "none";
				elem.parentNode.parentNode.className = "_hide_";
			}
		}
	}
}

function filterUnHide(re){
	var cmt = $xFirst("//table[@class='tab1']");
	var snap = $x(".//div[@class='BOOKDETAIL']", cmt);
	for (var i=0; i<snap.snapshotLength; i++) {
		elem = snap.snapshotItem(i);
		cont = $xFirst("./a[@class='black']", elem).textContent;
		if (cont.match(re)){
			elem.parentNode.parentNode.style.display = "";
			elem.parentNode.parentNode.className = "";
		}
	}
}
//
//Функции по работе с системными
function CB_Click(ev) {
	var idx = ev.value;
	var str = Genre[idx];
	var genre_re = new RegExp ("^("+str+")$");
	if (ev.checked) {
		filterUnHide(genre_re);
		for (var i=0; i<arrShow.length; i++) {
			var j = arrShow[i];
			if (idx != j) str = str + "|" + Genre[j];
		}
		arrShow.push(idx);
		genre_re = new RegExp ("^("+str+")$");
		filterHide(genre_re, 1);
	} else {
		filterHide(genre_re, 0);
		var arrTmp = new Array;
		for (var i=0; i<arrShow.length; i++) {
			var j = arrShow[i];
			if (idx != j) arrTmp.push(j);
		}
		arrShow = arrTmp;
	}
str = "_" + arrShow.join("_");
createCookie(CookieName, str, 90);
}


//Работа с ссылками            
    function url_book(link) { //Преобразования ссылки на книгу в полную ссылку
        arr = link.split("/");
        trans_link = arr[arr.length-2];
        full_link  = link + trans_link;
    return full_link;
	}
       
    function linkfb2(link) { //преобразование полной ссылки на книгу, в ссылку fb2
		fb2_link = link + '.fb2.zip';
    return fb2_link;
    }
		
    function linkrtf(link) { //преобразование полной ссылки на книгу, в ссылку fb2
        fb2_link = link + '.rtf.zip';
    return fb2_link;
    }
       
    function linkrb(link) { //преобразование полной ссылки на книгу, в ссылку fb2
        fb2_link = link + '.rb';
    return fb2_link;
    }
       
    function linkread(link) { //Преобразованние полной ссылки на книгу в ссылку для чтения (на содержание)
        read_link = link + '__0.html';
    return read_link;
    }
       
    
		
	//Работа с сылками на поисковые системы
    function set_link_ya(str) {
        ya_link = 'http://yandex.ru/yandsearch?text='+str;
	    ya_link = encodeURI(ya_link);
    return ya_link;
    }
	
	function set_link_lib(str) {
        lib_link = 'http://lib.ru/search/librusearch.cgi?query=' + str +'&group1=sites';
	//    lib_link = encodeURI(lib_link);
    return lib_link;
    }
	function set_link_go(str) {
        go_link = 'http://www.google.ru/search?q=' + str;
		go_link = encodeURI(go_link);
    return go_link;
    }
       
    function set_link_w(str) {
        w_link = 'http://ru.wikipedia.org/wiki/Служебная:Search?search=' + str +'&fulltext=Найти';
	    w_link = encodeURI(w_link);
    return w_link;
    }
       
    function set_link_lsek(str){
        lsek_link = 'http://lib.rus.ec/booksearch?ask=' + str;
	    lsek_link  = encodeURI(lsek_link);
    return lsek_link;
    }
       
    function set_link_fb2s(str){
        fb2s_link = 'http://fb2search.ru/cgi-bin/search?q='+str+'&Search=Найти';
		fb2s_link = encodeURI(fb2s_link);
    return fb2s_link;
    }
	    
	function set_link(url, name, img, name_search) {
		link =	'<a href="' + url + '" title="Искать `' + name + '` в ' + name_search +'"    target="_blank">' + img + '</a>';
	return link;
	}	
		
	function set_link_search_ya(name) { //Формирование ссылки на поиск в Яндексе
	    url_ya_html   = set_link(set_link_ya(name), name, set_ya_img(),"Яндексе");          //Формирование ссылки на поисковую систему по шаблону 
	return url_ya_html;
	} 
	
	function set_link_search_go(name) { //Формирование ссылки на поиск в Google
	    url_go_html   = set_link(set_link_go(name), name, set_go_img(),"Google");          //Формирование ссылки на поисковую систему по шаблону 
	return url_go_html;
	} 
	
	function set_link_search_w(name) { //Формирование ссылки на поиск в Wikipedia RU
	    url_w_html   = set_link(set_link_w(name), name, set_w_img(),"Wikipedia RU");          //Формирование ссылки на поисковую систему по шаблону 
	return url_w_html;
	} 
	
	function set_link_search_lsek(name) { //Формирование ссылки на поиск в Либрусек
		url_lsek_html   = set_link(set_link_lsek(name), name, set_lsek_img(),"Либрусек");          //Формирование ссылки на поисковую систему по шаблону 
	return url_lsek_html;
	}
	
	function set_link_search_fb2s(name) { //Формирование ссылки на поиск в FB2
		url_fb2s_html   = set_link(set_link_fb2s(name), name, set_fb2s_img(),"FB2 Search");          //Формирование ссылки на поисковую систему по шаблону 
	return url_fb2s_html;
	}
	
	function set_link_search_lib(name) { //Формирование ссылки на поиск в Lib.RU
		url_lib_html   = set_link(set_link_lib(name), name, set_lib_img(),"Lib.RU");          //Формирование ссылки на поисковую систему по шаблону 
	return url_lib_html;
	}
	//Функции формирования картинок (иконок)
	function set_ya_img() {//формирование иконки Яндекса
	    ya_img   = '<img src="data:;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8ACQD/AB0d/wAqJ/8AQkP/AE5Q/wBfX/8AfHr/AISG/wCXmP8Apqn9AL6+/gDk5P8A8vL/APz//gAAAAAA7u7u7u7u///ugF7uAu7v/+7TG+4C7u//7uoD7gLu7v/u7kC+Au7u/+7tsD4C7u7v7u7jEQLu7u/u7kBWAu7u7u7oB+4C7u7u7uMM7gLu7u/u4Q3uAu7u7+7jDO4C7u7/7ucZ7gLu7v/u7RKJAu7v/+7uxhAH7u//7u7u7u7u//8ADwAAAAcAAAAHAAAAAwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAADAAAAAwAAAAcAAAAHAAAADwAA" border="0" alt="Я">';
	return ya_img;		
	}	
		
	function set_go_img() { //Формирование иконки Google
	    go_img   = '<img src="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1tbUFHBwcFQAAABoAAAAaAAAAFgAAAA8AAAAWBAAAGwIAABoAAAAXAAAAGQAAABkAAAAaAAAAGg0NDRiOjo4JJiYmDwAAABQAAAATAAAADQwCAR1YFRB4nCsqua0yLMSbLCyxYxoYfBgFAiwDAQAUAAAAEgAAABMAAAAUBwcHEhQUFA0AAAAOAAAACxMEARayLy/F7T9C/640K7FuJR1pZiMgYpczMZqeLSzBIAcFPQEBABAAAAANAAAADgAAAA4XFxcJAAAACgAAAABbKSNY/1ZO/3MdHY8AAAAAAAAAAAAAAAAAAAAAjzc2lHwdG7oDAAAVAAAACAAAAAoAAAAKFxcXBgAAAAcAAAAAVj43Tfx6df87BQFmAQIAAgAAAAQAAAAEAAAAAI0vJomvLCftCwEAHQAAAAQAAAAHAAAABxEREQQAAAAEAAAAAwYEAAi4bVm0uT8/4UwOC1wnBgMlFAQAEF4YGmnwQ0X8niQfxQEAAAgAAAADAAAABAAAAAQzMzMCHh4eAh8fHwMAAAAAKSglBJVbWGfQX16qxktJsLItKNTqP0X/5DxE8VklJTsAAAAAHx8fAh8fHwIfHx8C7+/vBO3t7QTt7e0E7e3tBOrr6wIAAAAAAAAAALWHgkH+VFD/xjI226J1dDYAAAAA7e7uBO3t7QTt7e0E7e3tBP///wn///8K////Cv///wv///8Eybi3HHw1LHeySkjC/nd2/34iIZ1rbGkJ8fHxCv///wr///8K////Cv///wr///8R////E////xP///8P9OTiHtFGSNHPKS//15KSeP7k4Evgb3DOXh4cjouJiCD9/f4R////E////xP///8T////Gf///xv///8b////Dvu3rnbrNCn/o1NTk9/r6wn///8C/9fXaqskJf9kTUxX7e/vGP///xr///8b////G////yH///8k////JP///xb/0MyT00JA/5Byblv7//8d////Fv7Ix3XUNjH/hFhVee/z8x3///8j////JP///yT///8o////Lf///yz///8j//DmZNphWv+Oa2ll4urpJPHy8iLwcWDF0zEn+7edm1f///8m////LP///yz///8s////MP///zX///80////M////y77u7KoxlhZyrV/f3XSc3Oy7z83/7w5NtymioZg5OHgOf///zP///80////Nf///yv///89////Ov///zr///84////M//T0m/3oaGk/bS0uv24ubPujouw2oqIoO3j40r///83////PP///zP///8K////Mf///z7///89////Pf///z3///80////Mf///zH///8x////Mf///zX///88////Pv///zf///8SAAAAAAAAAAAAAAAAI8AAACBAAAAAAAAAEAgAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" border="0" alt="G">';
	return go_img;
	}
		
	function set_w_img() { //Формирование иконки Wikipedia
	    w_img    = '<img src="data:;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9/AAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB/WvXoYiIiIfEZfWBSIiIEGi/foqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF+iDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" alt="W" border="0">'
	return w_img;
	}
		
	function set_lsek_img(){ //Формирование иконки Либрусек
	    lsek_img = '<img src="data:;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAEgAAABIAAAAAAAAAAAAAABoYWGAd3WPh4abk5SgmZuhmpyknJylnZ6lnZ+lnZ6gmZqim52el5iVjpCCfHxtZ2eBeHaMhISgmZynoKKup6mwp6mxqaq0rK2zqq2zrK20ra6wqaqtpKSlnZ6Wj5F3c3SNhoijnJ+tpqivqKq0ra+1rq+zq6uzq6uyqqqyqqqzqqu2sLG1ra+moKKOio9ranCXkZWqpKezrbCtpKeilpanmpmzqaisoaCwp6ewo6Kom5qxpaOooqWTj5N1dHpOUFiclZmtp6u0rbBaWmaMh4g/Oj8/QEno5uT39vWUh4NhV1UyNDnz8/XBxMgjO2QMGE50bHBtZWkwM0fb1dP7+fgbGyLCvrrKx8TAvr0oKS0OEBI7PkBydHgcLVoFCTAMFlhiYGheXW0bHS28tbGQjo0zO01cXmlwb3eDfX9nZWhKRkkfJCwIEDAICzQTJXccQbXp5uT18/ILESEjKD+Qlaecn7CbnauPj5l7en8/QUkJDxkHEUQJE0ASKIQhRbo2ZMvAurifmZZVW26AhZaAgY9la30uPlYdMlAOGzMGEDEGDzQRIVsOKYIhSbpDeNdFfNcODyJeZHc1O08dJj8VIDgLGjYKGFwJFU0HE0YPI2EbPJIWNpsza8tIg9pKf9tMhd0rMEUqPpIRHlkUHUQVIjkTJEgHFV8JGFIbOowlS6gcQKU3bMVGhdhPjN9Qi99Nht1GU34OFjUdHyfGxsawsbEQGzsKGEUTLHwnTaYXNpozY75KhthPkN9cmuZTj+JSjOErQJQxMzcAAAACAgWioqIMFCgMGTgQKGMbOY0qU7JAcchJfdZLgtk1XZoHDRQAAAAVJW/X19cAAABlZWYAAAALEykVM3IfQYcnT5UvXaIODQo1NTVSUlKpqalJSUkAAAAQH3UoKCkAAAAAAAC3uLgaOn08ZMFFd8lCd8kVFxsPDg4XFxeBgYFaWlr6+voAAAASJ3gPG1wXHTEfIigZKGIjRrIkUbgSHjUOEBY4VpgxRXYPDw1nZ2aDg4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAQAAKAEAADABAAAAAwAA" alt="Л" border="0">';	
    return lsek_img;
	}
		
	function set_fb2s_img() { //Формирование иконки FB2 search
	   	fb2s_img = '<img src="data:;base64,AAABAAIAEBAQAAAAAAAoAQAAJgAAACAgEAAAAAAA6AIAAE4BAAAoAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqqgAAAAAKqqqqAAAAAAqqqqoAAAAACqoAAAAAAAAKqgAAAAAAAAqqAAAAAAAACqoAAAAAAAAKqgAAAAAAAAqqqqoAAAAACqqqqgAAAAAKqqqqAAAAAAAAAAAAAAAA/w8AAP8PAAD/DwAAAA8AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8AAAB/AAAAfwAAAH8AACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqqqqqqqAAAAAAAAAAAKqqqqqqqqqgAAAAAAAAAACqqqqqqqqqoAAAAAAAAAAAqqqqqqqqqqAAAAAAAAAAAKqqqqqqqqqgAAAAAAAAAACqqqqqqqqqoAAAAAAAAAAAqqqqqqqqqqAAAAAAAAAAAKqqqqqqqqqgAAAAAAAAAACqqqqgAAAAAAAAAAAAAAAAqqqqoAAAAAAAAAAAAAAAAKqqqqAAAAAAAAAAAAAAAACqqqqgAAAAAAAAAAAAAAAAqqqqoAAAAAAAAAAAAAAAAKqqqqAAAAAAAAAAAAAAAACqqqqgAAAAAAAAAAAAAAAAqqqqoAAAAAAAAAAAAAAAAKqqqqAAAAAAAAAAAAAAAACqqqqqqqqqoAAAAAAAAAAAqqqqqqqqqqAAAAAAAAAAAKqqqqqqqqqgAAAAAAAAAACqqqqqqqqqoAAAAAAAAAAAqqqqqqqqqqAAAAAAAAAAAKqqqqqqqqqgAAAAAAAAAACqqqqqqqqqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wD///8A////AP///wD///8A////AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//AAB//wAAf/8AAH//AAB//wAAf/8AAH//AAB//w==" alt="FB2" border="0">';
	return fb2s_img;
    }

	function set_lib_img() { //Формирование иконки FB2 search
	   	lib_img = '<img src="data:;base64,AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ABw///w9/B3cID//3B/cHeAcPf/8Pfwd3Bw9//w9/B3cID///B/cHeAcP//cPfwd3Bw9//wf3B3cPD///D38AdwcP//cH9wAABw9//w9wAAAPD///B/AAAAAP8AAPAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADwAAAA8AAAAfAADjHwAA/z8AAP8/AAD/PwAA" border="0" alt="Л">';
	return lib_img;
    }
	
	//Формирование служебных иконок
	function set_windows_img() { //Формирование иконки открытия в новом окне
		new_window = '<img src="" width="16" height="17" border="0" alt="[]">';
	return new_window;
	}
	
	function set_read_img() { //Формирование иконки "Читать книгу"
		img_read = '<img src="" width="16" height="16" alt="Читать" border="0">';
	return img_read;
	}
//
    function name_book(link) { //Получение название книги
        name = link.text;
    return name;
    }
		
    function check_value(str) { //Вырезает и возвращает число
		str = str.replace(/[^0-9]/g,'');
    return str;
    }
//
	       
    function autor_book_page(links){ //Получение ссылок на книги
		var links_autor_book_page = new Array();
		for (i in links) { //обработка ссылок
			var m = links[i].href.match(/\/author\/[_\w]+\/[_\w]+\/$/g); //ссылка на книгу
				if (m) {
					links_autor_book_page.push(links[i]); //добавление ссылки на страницу в массив
				}
			}
    return links_autor_book_page;
    }
       
    function get_link_page() { //Получение всех ссылок на странице
        links  = document.getElementsByTagName('a'); //получение всех ссылок со страницы
    return links;
    }
       
    function remove_fuck_link(links) { //удаление левых ссылок
        for (i in links) { //обработка ссылок
			if ( links[i] == undefined ) continue;
			var m = links[i].href.match(/\.zip$/g); //ссылка на ловушку
            if (m) {     
				links[i].parentNode.removeChild( links[i] );
			}
		}
    }
	
	function get_links_genre_autor_page(links) {
		var i, links_autor_book_page = new Array();
		for (i in links) { //обработка ссылок
			if ( links[i] == undefined ) continue;
		        genry_link = links[i].href;
				m = genry_link.match( /http:\/\/lib\.aldebaran\.ru\/genre\/[^\/]+\/[^\/]+\/.*?/g); //ссылка на страницу жанра
				if (m) {     
					links_autor_book_page.push(links[i]); //добавление ссылки на жанр в массив
				}
		}
	return	links_autor_book_page;
	}
//Рабочии функции, с основным функционалом
    function autor_pages (links_autor_book_page, links) { //Формирование ссылок на странице автора
		var url_links, td, count_down_book;
		count_down_book=0; //Обнуление счетчика ссылок
        for (i in links_autor_book_page) { //обработка ссылок на книги			  
           url_name               = name_book(links_autor_book_page[i]); //Название книги
           td                     = links_autor_book_page[i].parentNode.parentNode.cells[3]; //Получение значение в ячейке таблицы, с размером книги
           book                   = links_autor_book_page[i].parentNode.parentNode.cells[1]; //получение значение ячейки, где храниться название книги
		   //
           url_link               = url_book(links_autor_book_page[i].href); //Преборазование ссылки на книгу в полный адрес
           url_read               = linkread(url_link); //Преобразование полной ссылки на книгу в ссылку на чтение (содержание)
          
	       //Служебные иконки
	       img_new_window 		  = set_windows_img();
	       read_img      		  = set_read_img();
		   //Формирование ссылок на поисковые системы и на онлайн читалку
           url_read_html          = '<div name="read_book">  <a href="' + url_read + '" title="Читать `' + url_name+'`">' + read_img+'</a> ';
           url_read_html_target   = '<a href="' + url_read + '" title="Читать `' + url_name + '` в новом окне" target="_blank">' + img_new_window + '</a></div>';
		   
		   search_block           = '<br>' + set_link_search_ya(url_name) + ' ' + set_link_search_go(url_name) + ' ' + set_link_search_w(url_name) + ' ' + set_link_search_lsek(url_name) + ' ' + set_link_search_fb2s(url_name) + ' ' + set_link_search_lib(url_name);
           url_format_html        = '';
           if (check_value(td.innerHTML) > 0 ) { //Размер книги не 0
            url_fb2    = linkfb2(url_link); //Преобразование полной ссылки на книгу в fb2 ссылку
            url_rtf    = linkrtf(url_link); //Преобразование полной ссылки на книгу в rtf ссылку
            url_rb     = linkrb(url_link);  //Преобразование полной ссылки на книгу в rb ссылку
            count_down_book = count_down_book +1; //Увеличение кол-во книг на скачку
            //подготовка html ссылок на скачку книг
            url_fb2_html    = '<div id="fb2_book">   <a href="'+url_fb2+'" title="Читать '+url_name+' в формате fb2">fb2</a></div>';
            url_rtf_html    = '<div name="rtf_book"> <a href="'+url_rtf+'" title="Читать '+url_name+' в формате rtf">rtf</a></div>';
            url_rb_html     = '<div name="rb_book">  <a href="'+url_rb+'"  title="Читать '+url_name+' в формате rb">rb</a></div>';
            url_format_html	= '<div name="readblok"><hr>' + url_fb2_html+ url_rtf_html + url_rb_html + '</div>'; //Формирование блока для вставки  
           }
           //Формирование и вывод информации о книге, ссылок на поисковые системы и онлайн читалку.
           book.innerHTML = '<a href="' + links_autor_book_page[i].href + '" title="Перейти к книге `' + url_name + '`"><font color="black"><b>' + url_name + '</b></font></a>' + '  <a href="' + links_autor_book_page[i].href + '" target="_blank" title="Перейти к книге `' + url_name + '` в новом окне">' + img_new_window + '</a>' + url_read_html + url_read_html_target + search_block  + '<br>';
           td.innerHTML   = td.innerHTML + url_format_html; //вывод ccылок на скачку
        }
		//Создание доп меню на авторе
		var AutorTag, AutorObj, AutorName, AutorMenu;
		AutorTag  = document.getElementsByTagName('h1'); //получение тега с именем автора
		AutorObj  = AutorTag[0];
		AutorName = AutorObj.innerHTML.trim(); //получение имени автора
		AutorMenu = document.createElement('div');
		search_block           = set_link_search_ya(AutorName) + ' ' + set_link_search_go(AutorName) + ' ' + set_link_search_w(AutorName) + ' ' + set_link_search_lsek(AutorName) + ' ' + set_link_search_fb2s(AutorName) + ' ' + set_link_search_lib(AutorName);
	    AutorMenu.innerHTML = "<center>" + search_block + "</center>";
		AutorObj.parentNode.insertBefore(AutorMenu, AutorObj.nextSibling);
		 //Создание доп записи в строке кол-ва книг
        var menuBook = $xFirst("/html/body/table[4]/tbody/tr/td[2]/table[2]/tbody/tr[2]/td");
		menuBook.appendChild(document.createElement("br"));
	    menuBook.appendChild(document.createTextNode("Можно скачать книг этого автора:" + count_down_book));
		if (count_down_book>1) { //Если книг на скачку больше одной, то показываем предупреждение
			menuBook.appendChild(document.createElement("hr"));
			menuBook.appendChild(document.createTextNode("Предупреждение: не рекомендуется скачивать все книги одновременно, во избежание блокирование сервисом Альдебаран. При использывании программ для закачки следует выставить скачивание в 1-н поток, по 1-му файлу."));
            menuBook.appendChild(document.createElement("hr"));
		}   
     	//
		//Обработка переход на жанр
		links_genre_autor_page = get_links_genre_autor_page(links);
		for (i in links_genre_autor_page) { //обработка ссылок
			genreMenu  = document.createElement('div');	
			name_genre = links_genre_autor_page[i].text.trim();
		    search_block           = set_link_search_lsek(name_genre) + ' ' + set_link_search_fb2s(name_genre) + ' ' + set_link_search_lib(name_genre);
			genreMenu.innerHTML = '<a href="' + links_genre_autor_page[i].href + '" target="_blank" title="Открыть в новом окне `'+  name_genre +'`">' + img_new_window + '</a> '+search_block;
			links_genre_autor_page[i].parentNode.insertBefore(genreMenu, links_genre_autor_page[i].nextSibling);	
		}
		//
		
    }

//--
//Функция фильтра
	function recense_filter() {

	}
//


//Основной скрипт       
//константы
//const CookieName = "sdioGenre";
//
var i, j, aldebaran_patch, select_patch;
//Получение ссылок
var links_autor_book_page = new Array(); //массив ссылок на страницы книг
links = get_link_page();        
links_autor_book_page=autor_book_page(links); //Формирование массива ссылок на книги                                  
//Обработка страниц    
aldebaran_patch = document.location.pathname;

//Страница автора
select_patch = aldebaran_patch.match(/.*author\/[^\/]+\/$/g);  
if (select_patch) { //страница автора
	remove_fuck_link(links);
	autor_pages(links_autor_book_page, links);        //вывод ссылок на скачку книг
	exit;
}

//Страница книги
select_patch = document.location.pathname.match(/\/author\/[_\w]+\/[_\w]+\/$/g); //страница книги
if (select_patch) { //страница книги
	alert ("!");
	exit;
} 

select_patch = document.location.pathname.match(/.*\/newrecense\/.*/g); //страница рецензий
if (select_patch) { //страница рецензий
//	recense_filter(); //Вывод и работа фильтра
const CookieName = "sdioGenre";		
		
	var GenreTop = [
	"Фантастика",
	"Детективы и боевики",
	"Проза",
	"Любовные романы",
	"Приключения",
	"Детские",
	"Поэзия и драматургия",
	"Старинная литература",
	"Научно-образовательная",
	"Компьютеры и Интернет",
	"Справочная литература",
	"Документальное",
	"Религия и духовность",
	"Юмор",
	"Дом и Семья"
   ];

var Genre = [ 	
	// Фантастика
//	"НФ|Юмористическая фантастика|Космическая фантастика|Фантастический боевик|Детективная фантастика|Киберпанк",
	"НФ|Героическая фантастика|Юмористическая фантастика|Космическая фантастика|Фантастический боевик|Эпическая фантастика|Детективная фантастика|Киберпанк|Социально-философская фантастика|Фэнтези|Альтернативная история|Ужасы и мистика",

	// Детективы и боевики
	"Классические детективы|Полицейские детективы|Боевики|Иронические детективы|Исторические детективы|Шпионские детективы|Криминальные детективы|Политические детективы|Маньяки|Крутой детектив|Триллеры|Детективы",

	// Проза
	"Классическая проза|Историческая проза|Современная проза|Контркультура|Военная проза",

	// Любовные романы
	"Современные любовные романы|Исторические любовные романы|Остросюжетные любовные романы|Короткие любовные романы|Эротика",

	// Приключения
	"Вестерны|Исторические приключения|Приключения: Индейцы|Морские приключения|Путешествия и география|Природа и животные|Приключения",

	// Детские
	"Сказки|Детские стихи|Детская проза|Детская фантастика|Детские остросюжетные|Детские приключения|Детская образовательная|Детские",

	// Поэзия и драматургия
	"Поэзия|Драматургия",

	// Старинная литература
	"Античная литература|Европейская старинная литература|Древнерусская литература|Древневосточная литература|Мифы. Легенды. Эпос|Старинная литература",

	// Научно-образовательная
	"История|Психология|Культурология|Религиоведение|Философия|Политика|Деловая литература|Юриспруденция|Языкознание|Медицина|Физика|Математика|Биология|Технические науки|Научно-образовательная",

	// Компьютеры и Интернет
	"Интернет|Программирование|Компьютерное Железо|Программы|ОС и Сети|Компьютеры и Интернет: Прочее",

	// Справочная литература
	"Энциклопедии|Словари|Справочники|Путеводители|Справочная литература: Прочее",

	// Документальное
	"Биографии и мемуары|Публицистика|Критика|Документальная проза",

	// Религия и духовность
	"Религия|Эзотерика|Самосовершенствование|Религия и духовность: Прочее",

	// Юмор
	"Анекдоты|Юмористическая проза|Юмористические стихи|Юмор",

	// Дом и Семья
	"Кулинария|Домашние животные|Хобби и ремесла|Развлечения|Здоровье|Сад и Огород|Сделай сам|Спорт|Эротика и секс|Дом и Семья"
  ];

var a = $x("//noindex");
if (a) {
	for (var i=0; i < a.snapshotLength; i++) {
		var x=a.snapshotItem(i);
		x.parentNode.removeChild(x);
	}
}
var menuTD = $xFirst("/html/body/table/tbody/tr/td[@class='kol3']");
menuTD.width = 220;
	menuTD.appendChild(document.createTextNode("Показать только жанры:"));
	menuTD.appendChild(document.createElement("br"));

var del = $xFirst("./center", menuTD);
if (del) {
	var menuTD = del.parentNode;
	menuTD.removeChild(del);
	menuTD.parentNode.removeChild($xLast("./td", menuTD.parentNode));
}

for (var i=0; i<GenreTop.length; i++){
	var newINP = document.createElement("input");
	newINP.className = "_genre_";
	newINP.id = "g_" + i;
	newINP.type = "checkbox";
	newINP.value = i;
	newINP.name = GenreTop[i];
	newINP.addEventListener(
				'click',
				function(evt) {
				CB_Click(evt.currentTarget);
				return false;
				},
				false
				); 
	menuTD.appendChild(newINP);
	menuTD.appendChild(document.createTextNode(GenreTop[i]));
	menuTD.appendChild(document.createElement("br"));
}

var whatToShow = readCookie(CookieName);
if (! whatToShow) {
	whatToShow = "_0";
	createCookie(CookieName, whatToShow, 90);
}

var arrShow = new Array;
var firstRun = new Array;
firstRun = whatToShow.split("_");

var k;
for (var i=1; i<firstRun.length; i++) {
	k = firstRun[i];
	$('g_' + k).click();
}


	exit;	
}
})();